package cn.itcast.service.impl;

import cn.itcast.dao.OrderSettingDao;
import cn.itcast.pojo.OSVo;
import cn.itcast.pojo.OrderSetting;
import cn.itcast.service.OrderSettingService;
import cn.itcast.utils.DateUtils;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class OrderSettingServiceImpl implements OrderSettingService {

    @Autowired
    private OrderSettingDao orderSettingDao;

    /**
     * 更新问题
     * @param orderSetting
     * @return
     */
    @Override
    public int update(OrderSetting orderSetting) {
        //如果为空 直接返回
        if (orderSetting==null){
            return 0;
        }
        try {
        //更具拿到的时间查询 表中是否有预约设置
       // Date orderDate = orderSetting.getOrderDate();
        String tame= DateUtils.parseDate2String(orderSetting.getOrderDate());
        String tames = tame.substring(0, 10); //从0到10索引
        Date orderDate = DateUtils.parseString2Date(tames);//格式转换
       OrderSetting i =orderSettingDao.timesele(orderDate);

        if(i==null){
            //为0就是没有设置过的 调用新建方法
            orderSettingDao.insert(orderSetting);
        }
        //如果设置人数大于原先预约人数，不能设置，设置失败
        if (orderSetting.getNumber()<i.getReservations()){
                return 0;
            }

            //调用工具类 日期转换
            String date= DateUtils.parseDate2String(orderSetting.getOrderDate());
            String substring = date.substring(0, 10); //从0到10索引
            Date dates = DateUtils.parseString2Date(substring);//格式转换
            orderSetting.setOrderDate(dates);//设置时间
        } catch (Exception e) {
            e.printStackTrace();
        }
        return orderSettingDao.update(orderSetting);//调用方法
    }

    /**
     * 预约设置中的上传文件方法
     * @param orderSetting
     */
    @Override
    public int insert(OrderSetting orderSetting) {
        return  orderSettingDao.insert(orderSetting);
    }

    /**
     * 预约日历展现
     * @param date
     * @return
     */
    @Override
    public List<OSVo> findByMonth(String date) {
        String[] split = date.split("-");//传过来的是 年-月 2020-7 根据”—“ 分割成字符串数组
        String time =split[0]+"-"+split[1];;
        try {

        if (Integer.valueOf(split[1])<10){
                //如果小于10 不是十位 需要在前面加个0 变成十前面的月份
//                 time = split[0]+split[1].replace(split[1], "-"+0 + split[1]);
                time=split[0]+"-"+("0"+split[1]);
        }
            List<OrderSetting> orderSettingList=orderSettingDao.findByMonth(time);
            //
            List<OSVo> timelist= new ArrayList<>();
            if (orderSettingList==null||orderSettingList.size()==0){
                //如果集合没有东西 直接返回
                OSVo osVo = new OSVo();
                timelist.add(osVo);
                return  timelist;
            }

            for (OrderSetting s : orderSettingList) {
                //String substring = DateUtils.parseDate2String(s.getOrderDate()).substring(8); //取得日
                //前端要的格式  {[date:1 number:300 reservations:1]}
                //OSVo 自定义一个封装类
                OSVo osVo = new OSVo();
                osVo.setDate(s.getOrderDate().getDate()); //预约的日期
                osVo.setId(s.getId());
                osVo.setNumber(s.getNumber()); //可预约的人数
                osVo.setReservations(s.getReservations());//已预约的人数
                timelist.add(osVo); //装入集合
            }
            return  timelist;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
